package main.java.br.com.projeto.domain.entity;

import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;

@Entity
public class Servico extends EntityAbstract{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 140383461325160705L;

	@Column(length=40, nullable=false)
	private String descricao;
	
	@Column
	private Float valorMaoObra;
	
	@Column
	private Float comissao;
	
	@Column(nullable=false)
	private Float valorServico;
	
	@Column
	private Float tempoMedio;
	
	@Column(length=255)
	private String observacao;
	
	private Float valorTotal;

	@ManyToMany(fetch = FetchType.LAZY)
	@JoinTable(name="servico_funcionario",
			joinColumns={@JoinColumn(name="servico_id")},
			inverseJoinColumns={@JoinColumn(name="funcionario_id")})
	private List<Funcionario> funcionarios;
	
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public Float getValorMaoObra() {
		return valorMaoObra;
	}
	public void setValorMaoObra(Float valorMaoObra) {
		this.valorMaoObra = valorMaoObra;
	}
	public Float getComissao() {
		return comissao;
	}
	public void setComissao(Float comissao) {
		this.comissao = comissao;
	}
	public Float getTempoMedio() {
		return tempoMedio;
	}
	public void setTempoMedio(Float tempoMedio) {
		this.tempoMedio = tempoMedio;
	}
	public Float getValorServico() {
		return valorServico;
	}
	public void setValorServico(Float valorServico) {
		this.valorServico = valorServico;
	}
	public String getObservacao() {
		return observacao;
	}
	public void setObservacao(String observacao) {
		this.observacao = observacao;
	}
	public List<Funcionario> getFuncionarios() {
		return funcionarios;
	}
	public void setFuncionarios(List<Funcionario> funcionarios) {
		this.funcionarios = funcionarios;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj) 
			return true;
		
		Servico other = (Servico) obj;
		
		if (id == other.getId())
			return true;
		
		return false;
	}
	
	public Float calculaValorTotal()
	{
		if ( this.valorMaoObra == null || this.valorServico == null )
			return null;
		return this.valorMaoObra+this.valorServico;
	}
	
	public Float getValorTotal() {
		return valorTotal;
	}
	public void setValorTotal(Float valorTotal) {
		this.valorTotal = valorTotal;
	}
	
	
}
